1. If you haven’t completed a linear algebra class before, you probably do not have the mathematical maturity to really grasp the subject
Just like it isn’t possible to understand “object oriented programming” if you can barely code a calculator, it isn’t possible to understand zero knowledge proofs without a sufficient math background. However, the math needed is nowhere near as advanced as people think it needs to be. “Abstract Algebra” sounds scary, but it isn’t. Our book introduces all the abstract algebra you’ll need. “Finite fields” may sound advanced, but they aren’t.
Nevertheless, a “math light” introduction to zk proofs is an oxymoron. ZK proofs are fundamentally mathematical.
Expertise in linear algebra is not essential, but you should understand what an inner product is, how matrix multiplication works, and what linear dependence is. Bonus points if you understand the relationship between the determinant of a matrix and the product of two square matrices (though this is not essential).
2. Math notation is efficient, you should be reasonably comfortable with it
If you can’t figure out why
is basically a double for-loop, understanding zk proofs will be a challenge
We could have written that as
But note this is a much more verbose way to express it. Our zero knowledge tutorial explains in English the notation, but you need to be able to read it, even if it means copying the formula down with pen and paper to see it piece-by-piece.
Being able to read math notation fluently is not a requirement, but you should be able to translate it without excessive effort.
3. Zero knowledge has a high concentration of straightforward, but unfamiliar topics
Most programmers understand polynomials, but have you ever sat down and wondered why the roots of a product polynomial is the union of the roots of the two polynomials that make up the product? This information is useless most of the time — except when studying zero knowledge proofs. In zero knowledge proofs, straightforward but “useless” math suddenly becomes useful. Because you probably haven’t exercised the part of your brain that relies on this kind of math, it will feel more difficult.
4. It isn’t possible to learn zero knowledge proofs with less than 80 hours of effort, and that is a best case scenario
Although the book is divided into 12 chapters, it’s very unrealistic to grasp the material in 12 days. Each topic is unfamiliar to most programmers, and each topic has a “sink in” period of about a week, assuming you are actively thinking about the concept and writing code to test your knowledge.
We think 12-18 weeks of disciplined self-study is realistic for engineers with sufficient math background.
You need to get your hands dirty with the topic to get an intuition for it — and our book provides plenty of suggestions for how to do that. Just like you cannot learn to code only by reading a book or watching a video, you cannot learn zero knowledge proofs without actually tangling with the math involved.
If you are fresh out of a mathematical undergraduate degree, and were lucky enough to have taken a class on elliptic curves, this book will be a breeze for you. Realistically, we expect less than 5% of our readers fall into that category.